NVMe over Ethernet:又一家FPGA互连闪存的Apeiron
NVMe可以说是当下最火的企业级SSD接口,在它遇到机箱外部扩展连接的瓶颈时,NVM Express overFabrics(NoF)被提出并于近日发布了1.0版本规范。而有些厂商走在了前面,除了使用PCIe主机连接的EMC DSSD之外,更多的还是选择相对容易实现的以太网,例如提出NVMe over Ethernet(NoE)的Apeiron。
扩展阅读:《IDF16:NVMe Over Fabric、SPDK和双控存储元年》、《解析DSSD对象机制:内存APIAtomic读写再现》
在本文标题中我提到了FPGA,正是这点让我联想起去年曾经撰写过的一款产品。如果您记不清也没关系,往后面看就会明白了,当然它们在架构上还是有一些区别。
2U机箱内17.8M IOPS、72GB/s带宽
Apeiron的ADS1000号称Scale-outNVMe阵列,使用24个2.5英寸NVMe SSD跑出72GB/s带宽和1780万IOPS,可以计算出平均每块盘3GB/s和约74万IOPS——几乎发挥出了裸盘性能的极限。单看这一数字足以让竞争对手汗颜,尽管参考资料我认为Apeiron在冗余保护和所谓的“Scale-out”方面可能没有做太多,而如此小的Fabric性能开销已经足够引起兴趣来继续研究了。
至于3种容量点比较好理解,38/76/152TB分别对应单盘容量1.6/3.2/6.4TB。从机箱后端图片来看,电源和散热风扇都是冗余配置,虽然有2个IOM但不是双控(每个IOM连接一半也就是12个SSD)。32个Apeiron DataFabric Ports就是基于40Gb/s以太网,这些端口与服务器上安装的ADS40G双口HBA连接——一款专用的网卡,之所以被称为HBA是因为它们只用来访问ADS1000中的NVMe SSD。
从FPGA+以太网Switch架构联想到NetBRIC
上图就是ADS1000的IOM控制器,我用红色字体标出哪几颗芯片用了Intel (Altera)的FPGA,再加上这款高性能产品宣称支持下一代高速非易失半导体存储器3D XPoint,Apeiron应该是受到了Intel的欢迎和支持。
扩展阅读:《从技术到应用:揭开3D XPoint Memory迷雾》
在控制器一端的3颗FPGA被称为Apeiron StorageController,每颗要连接4个NVMe SSD(PCIe 3.0 x4,注意不用双端口NVMe),也就是总共16 lane PCIe。同时为了匹配这个带宽,应该还要同时配置4个40Gb/s以太网连接到最大那个散热片下面的Ethernet SwitchFabric(交换机芯片)。那么这些FPGA的主要作用,就是为后端SSD提供NVMe over Ethernet Target——与Apeiron HBA上的NoE Initiator建立连接。
既然有了40GbE交换机ASIC,每个IOM对应的12个NVMe SSD就能从16个40Gb/s QSFP+网口中的任何一个映射给前端主机。
NetBRIC S5架构图(不含管理CPU)
这张图来自我去年撰写的一篇《NetBRIC S5:“另类”设计的全闪存阵列》,其实Apeiron实现的功能与它类似,都是将SSD/闪存以40GbE提供给前端服务器。下面我们简单做个对比。
NetBRIC S5没有在机箱中使用交换机ASIC,基于NIC网卡的FPGA主控与连接闪存模块的SwitchFPGA之间是点对点的私有协议。如果是NIC网卡故障可以切换别的网卡访问数据,Switch FPGA故障会影响到其后端2个Flash模块的访问(这就是故障域)。如果要在NIC FPGA上实现跨SwitchFPGA数据副本,技术上看应该可以实现,不过其主要面对的互联网用户可能只拿它存放Cache数据,或者由前端主机实现跨机箱的数据复制。
NetBRIC S5由于做得早一些,也可能是为了高密度(去年宣布时3U机箱内支持60个8TB Flash子卡),没用采用标准NVMe SSD。EMC DSSD也是定制的闪存模块,当然它的硬件工程水平还是受到普遍认可的。
相比之下,Apeiron ADS1000机箱中是2个故障域,每个IOM硬件都有单点。这个要靠前端的计算节点来解决,我们后面就会讲到。
性能秘诀:NoE每一帧数据只增加4B开销
上图描绘了Apeiron NoE的Frame(帧)结构。我们看到在12B的Ethernet L2 Header和2B Ehter Type之后只加入了一个4B的NoE Header,之后就都是PCIeTLP,直到尾部4B FCS。这个封装每一帧只有固定大小的4B开销,所以说性能好。
右边的示意则介绍了Apeiron Data Fabic。在Apeiron Storage Controller和主机端的Apeiron HBA之间只隔着以太网交换机和网卡的PHY/MAC&Link,因此从NVMe Virtualization软件栈到SSD的延时只有3µs。
上层依赖分布式存储软件
这是一套包含多个计算节点的数据存储交换Fabric,后端的Slice我理解可以是多台ADS1000,整套存储系统由计算节点上运行的“分布式存储处理软件”聚合而成。ADS1000的作用就相当于JBOD,只是不像共享SASJBOD那样到每个驱动器的连接路径都是完全冗余的。
故障切换和自动复制
上图示意的是计算节点的Failover。由于每个节点都可以访问ADS1000,在节点故障时只需要将元数据remap到另一备用节点即可恢复访问。这里号称节点rebuild时间从10小时降低到10秒,当然本身就不需要复制/重建数据的过程。
Apeiron的自动复制被称做“HiddenMirror(隐含镜像)”,这种透明备份方式采取硬件辅助的软件配置来实现,宣称能提升40%的OP/s。我理解应该是同步复制,只不过在FGPA-FPGA之间完成而可以对前端计算节点透明。其实应该还有一种方式,既然NoE属于SCSI之外的私有协议,ADS40G HBA应该能够同时向后端2个目标写入数据?当然这样做可能会牺牲带宽。
“无损”性能、单台服务器250万IOPS
在了解原理之后,讨论性能的部分反而感觉轻松了。
在Apeiron的资料中对比了同一块Intel P3700 1.6TB SSD直连服务器和在ADS1000中的表现,可以看到读写IOPS和延时都相差无几。ESG的报告中也是这种测试,毕竟不需要配很多盘就能看到NoE的效果。
上图是用一台1U服务器做的测试。深蓝色方块代表DAS本地直连SSD,可以看到当并发任务x队列深度达到200时基本达到1百万左右的峰值IOPS,这个与我在《突破百万IOPS:blk-mq释放SCSI性能》一文中列出的(SAS)RAID HBA硬件限制相符。浅蓝色圆圈代表Apeiron ADS中的一种SSD配置,并发度400左右接近峰值,比IOPS DAS方案提高了95%;而红色三角更换了另一种更快的SSD,并发度600时达到250万IOPS,进一步超出DAS方案150%。
单台服务器测到2.5M IOPS,Apeiron表示用外部持久存储达到了一个新的性能水平。具体的配置是:1U, Dual socket Intel Haswell-EP Xeon processors (2.3GHz, 14 CORE,64GB/proc),至于NVMe over Ethernet有没有RDMA或者用户态DPDK/SPDK?我就不确定了,有知道的朋友可以在文章下面留言。
与Apeiron ADS1000相比,EMC DSSD有针对闪存模块完善的RAID保护,以及对象/块/文件3种访问方式。从单台设备功能相比两者不在同一量级,不过可以从中看到一个趋势:随着NVMe成为存储系统中主流的闪存连接方式,可能又会出现一轮像之前全闪存阵列初创厂商那样“百花齐放”的局面,集中与分布式存储的竞争将在这里延续,鹿死谁手还很难说。
总之我喜欢差异化,包括硬件在内:)
注:本文只代表作者个人观点,与任何组织机构无关,如有错误和不足之处欢迎在留言中批评指正。进一步交流技术,可以加我的QQ/微信:490834312。
欢迎转发链接分享,请在本公众号发布2天后,才能转载本文。尊重知识,请必须全文转载,并包括本行及如下二维码。
感谢您的阅读和支持!《企业存储技术》微信公众号:huangliang_storage
长按二维码可直接识别关注